﻿using System;
using System.Collections.Generic;
using OrderManager.Domain.Entities;

namespace OrderManager.Domain.Repositories
{
    /// <summary>
    /// Defines methods that some type implements to manipulate repository entities
    /// </summary>
    public interface IOrderRepository : IRepositoryBase<Order>
    {
        /// <summary>
        /// Create an entity in repository with specified number, date, amount, description and belonged to customer with specified id
        /// </summary>
        /// <param name="number">Entity's number</param>
        /// <param name="orderDate">Entity's date</param>
        /// <param name="amount">Entity's amount</param>
        /// <param name="desctiption">Entity's description</param>
        /// <param name="customerId">Id of customer current entity belonges to</param>
        /// <returns></returns>
        Order Create(Int32 number, DateTime orderDate,Int32 amount, String desctiption, Int32 customerId);
        
        /// <summary>
        /// Get entities from repository that belong to customer with specified id
        /// </summary>
        /// <param name="customerId">Id of customer current entity belonges to</param>
        /// <returns>Collection of <see cref="OrderManager.Domain.Entities.Order"/></returns>
        List<Order> GetOrdersForCustomer(int customerId);
    }
}